package com.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.project.bean.UserBean;
/**
 * @Title: IUserService
 * @Package: com.project.service
 * @Description:
 * @Author: Liang-Xie
 */
@SuppressWarnings("all")
public interface IUserService {
    /**
     * 登陆
     *通过调用用户的登陆判断方法。 进校校验登陆。
     * 校验成功 返回登陆对象用户，并保存到session 中并且添加日志。
     * 校验失败，返回null
     * @param name 用户名
     * @param pwd  密码
     * @return 用户对象
     */
    UserBean login(String name, String pwd);

    /**
     * 动态分页查询用户
     *
     * @param pageNO 页码
     * @param name   姓名
     * @return 用户分页对象
     */
    IPage<UserBean> findByItem(Integer pageNO, String name);

    /**
     * 添加用户  查询该用户是否存在 如果存在返回false
     * 如果不存在
     * 完成用户添加 同时添加该用户拥有的角色
     *
     * @param user      用户对象
     * @param roleIdArray 用户角色id数组
     */
    boolean add(UserBean user, Integer[] roleIdArray);

    /**
     * 删除用户
     * 先判断是不是登陆用户 是返回假 不是删除
     * 先用户角色中间表用户外键置空 在删除用户
     * @param userId 用户编号
     */
    void del(Integer userId);

    /**
     * 修改 用户权限
     *
     * @param userId    用户id
     * @param roleIdArray 新权限数组
     */
    void updateRole(Integer userId, Integer[] roleIdArray);

    /**
     * 按照用户编号 查询用户信息
     * 同时查询该用户的 角色集合，权限集合
     * @param userId 用户编号
     * @return 用户对象
     */
    UserBean findById(Integer userId);

    /**
     * 修改密码
     * @param userId 用户编号
     * @param pwd 新密码
     */
    void updatePwd(Integer userId,String pwd);

}
